package com.ruoyi.order.service;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.order.domain.ProductImportData;
import com.ruoyi.order.domain.TbProduct;
import com.ruoyi.order.vo.ProductPlusVo;
import org.apache.poi.ss.usermodel.Workbook;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 商品Service接口
 * 
 * @author ruoyi
 * @date 2025-08-19
 */
public interface ITbProductService 
{
    /**
     * 查询商品
     * 
     * @param id 商品主键
     * @return 商品
     */
    public TbProduct selectTbProductById(Long id);

    /**
     * 查询商品列表
     * 
     * @param tbProduct 商品
     * @return 商品集合
     */
    public List<TbProduct> selectTbProductList(TbProduct tbProduct);


    public List<JSONObject> selectProductVoList(ProductPlusVo productPlusVo);

    public void addProductVo(JSONObject jsonObject);

    public void editProduct(JSONObject jsonObject);

    public void removeProducts(List<Long> ids);

    /**
     * 新增商品
     * 
     * @param tbProduct 商品
     * @return 结果
     */
    public int insertTbProduct(TbProduct tbProduct);

    /**
     * 修改商品
     * 
     * @param tbProduct 商品
     * @return 结果
     */
    public int updateTbProduct(TbProduct tbProduct);

    /**
     * 批量删除商品
     * 
     * @param ids 需要删除的商品主键集合
     * @return 结果
     */
    public int deleteTbProductByIds(Long[] ids);

    /**
     * 删除商品信息
     * 
     * @param id 商品主键
     * @return 结果
     */
    public int deleteTbProductById(Long id);

    /**
     * 商品导出
     * @param tbProduct
     * @param response
     */
    Workbook exportData(HttpServletResponse response, TbProduct tbProduct) throws URISyntaxException, IOException;
    /**
     * 导入商品数据
     * @param productList 商品数据列表
     * @param categoryName 商品类别名称
     * @param updateSupport 是否支持更新
     * @return 成功导入数量
     */
    int importProductData(List<ProductImportData> productList, String categoryName, boolean updateSupport);

}
